package com.shunwang.caipiao.data.model;

import java.util.List;

public interface DataModel<ROW,CELL,CELL_ITEM,KEY> {
	/** 获取第几行数据 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveRow(int rowNum);
	
	/** 获取某一行中的某一列 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveCell(int cellIndex,int rowNum);
	
	/** 根据关键字或取某一个行数据 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveRowByKey(KEY key);
	
	/** 根据关键字获取某一单元格信息 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveCellByKey(KEY key,int cellIndex);
	
	/** 移动到下一行 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveNextRow();
	
	/** 移动到下一列 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveNextCell();
	
	/** 获取当前行 */
	public ROW getCurrentRow();
	
	/** 获取当前列 */
	public CELL getCurrentCell();
	
	/** 获取某一列数据*/
	public List<CELL> getCellData(int cellIndex);
	
	/** 获取某一列数据*/
	public List<CELL_ITEM> getCellDatas(int cellIndex[]);
	
	/** 获取某一列数据(当前行下的所有数据)*/
	public List<CELL> getCellDataAfter(int cellIndex);
	
	/** 获取某一列数据(当前行下的所有数据)*/
	public List<CELL_ITEM> getCellDatasAfter(int cellIndex[]);
	
	/** 获取某一列数据(当前行之前的所有数据) */
	public List<CELL> getCellDataBefore(int cellIndex);
	
	/** 获取某一列数据(当前行之前的所有数据) */
	public List<CELL_ITEM> getCellDatasBefore(int cellIndex[]);
	
	/** 获取当前行之前的所有行信息 */
	public List<ROW> getCurrentRowsBefore();
	
	/** 获取当前行之后的所有行信息 */
	public List<ROW> getCurrentRowsAfter();
	
	/** 返回第一行节点 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveFirstRow();
	
	/** 返回最后一行节点 */
	public DataModel<ROW,CELL,CELL_ITEM,KEY> moveLastRow();
	
	/** 获取最大行数 */
	public int getMaxRowNum();
	
	/** 获取最大列数 */
	public int getMaxCellNum();
	
	/** 限制记录数 */
	public void limitRowMax(int rowNum);
	
	/** 限制Cell宽度 */
	public void limitCellMax(int cellNum);
	
	/** 重置Row数量 */
	public void resetRowMax();
	
	/** 重置cell数量*/
	public void resetCellMax();
	
	/** 当前Row行数 */
	public int getCurrentRowNum();
	
	/** 当前cell列数 */
	public int getCurrentCellNum();
}
